This invention relates to name space structure and variable resolution methods and arrangements in object oriented systems.
Object oriented systems rely upon the linkage of variable spaces to permit resolution of the value of particular variables employed in methods defined within objects employed in object oriented systems. The particular methods defined within an object can be executed provided the meanings of variables associated with the methods to be executed are determinable. A variable may be specified within the same object which defines a particular method. Moreover, the variable may also be specified in a linked variable space or object.
Accordingly, when a message is sent to a particular object to execute or evoke a particular method, the method is capable of immediate, run-time execution. However, if the particular variables required by the method for execution are not locally defined or capable of determination, reliance upon the inherent capabilities of object oriented systems is required in order to permit variable scoping and name resolution with respect to the particular variables.
The relationships between objects are typically expressed lexically, that is by definition. Such definitions can be expressed prior to run-time, during compilation of the object oriented system for example. The connections, linkages, and relationships between objects need not be organized initially in a very intelligent or meaningful way. In fact, an arbitrary interconnection scheme is typically produced prior to run-time, during compilation, in order to establish a sufficient level of order between the various objects in the object oriented system, and to enable progress toward the actual accomplishment of program execution.
By way of an example, a number of objects which are capable of being physically viewed on a computer monitor can be selected. Accordingly, when an object such as a window structure, for example, is displayed on a computer monitor, with another object, such as a button, for example, the two objects can be superimposed over each other. Thus, the two objects, a window and a button become visually related by superimposition on a computer monitor. Fundamentally, this connection or relationship is a lexical relationship, pre-established prior to run-time. The two objects, the window and the button are visually linked by the overlap of their respective images. Further, they are linked in terms of the underlying object oriented system, in that the method which invokes the display of the respective images relies upon a variable specifying the location of the display of the images. More particularly, the variable location for display of the "OK" button was specified to be within the physical boundaries of the GUI window constituting another object of the object system.
The objects employed in object oriented systems are software architectural elements having modifiable characteristics. Objects can be characterized with particular methods, variables, tables, and values. Some objects remain transparent to the user, while others are expressed affirmatively on the computer screen. As noted above, a common example of frequently employed objects in a graphical user interface (GUI) environment are windows and buttons. By moving the cursor over a button and double clicking, specific methods associated with the button object can be activated. Further, it is known that methods contained in objects are dependent upon variables, strings, and values. Typically the methods are organized in tables, which may for example be called dispatch tables. A particular object may define a plurality of methods. An example of a method which can be defined in an object is the display method, which is specified by the words, "method: display ( )." This method displays a defined object at a physical location which may be referenced by a variable such as "G," for example. The variable G may be lexically defined at a selected time prior to execution. When the display method is invoked, the selected object is displayed at a predetermined location referenced by variable "G."
The establishment of variable specification within a particular object in which the method relying upon the variable resides is limited by the ability of the object oriented system during variable resolution and name space scoping to determine the specification of a needed variable by upward chaining through the class definitions, and, if required, the superclass definitions. The scoping and resolution effort typically proceeds level by level, hierarchically, until the variable's meaning is defined. The scoping effort follows the preset, typically arbitrary linkages between objects and classes which have been established during the compilation period of the particular object oriented system. Encapsulation continues to have meaning in that the scoping activity is limited to the lowest level at which variable resolution is in fact enabled. Thus, the variable being scoped may be differently defined or specified throughout the object oriented system. However, the particular application specific meaning that the variable takes on is set by the layered hierarchy established by inheritance and the bounds of the object which invokes the methods of a particular message.
It is an object of the invention to permit both lexical and dynamic (i.e., run-time) variable scoping in object oriented GUI controlled computer operations.
Additionally, it is an object of the invention to promote efficiency and flexibility in the processing and implementation of object relationships.